﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Sige
{
    public partial class alta_usuarios : Form
    {

        SqlConnection cn_superbit;
        DataSet dsUsuarios = new DataSet();

        public alta_usuarios()
        {
            InitializeComponent();
        }

        private void alta_usuarios_Load(object sender, EventArgs e)
        {
            Accesoadatos datos = new Accesoadatos();
            string rutaBDSuperbit = datos.getruta();
            cn_superbit = datos.ObtenerConexion(rutaBDSuperbit);
        }

     

        private void btn_guardar_usuario_Click(object sender, EventArgs e)
        {
       
            DateTime date = new DateTime();
            date = DateTime.Today;
            class_usuarios usuarios = new class_usuarios();

            int ingreso = validar_ingreso();
            bool validar_repet = usuarios.validar_repetidos(txtbx_pass.Text, txtbx_repetir_pass.Text);


            call_sp altaU = new call_sp();

            if (ingreso == 1 && validar_repet==true)
            {
                try
                {
                    //SqlCommand cmd_SP_Alta = new SqlCommand("alta_usuario", cn_superbit); //creo un comando sql con el nombre de lo q se ejecuta.

                    // defino el comando como un procedimiento
                    //cmd_SP_Alta.CommandType = CommandType.StoredProcedure;

                    // reemplazado por el altaU clase para llamar SP
                    SqlCommand cmd_SP_Alta = new SqlCommand();
                    
                    cmd_SP_Alta = altaU.Set_Comando("pa_ALTAUSUARIO", cn_superbit);

                    //defino cada parametro del procedure al comando, con el valor ingresado en el formulario.
                    //RECORDANDO LOS PARAMETROS: @cod char(4), @nombre char(8), @fechaalta datetime, @fechabaja datetime, 
                    //@fecha_mod_pass datetime, @clave varchar(10), @estado bit, @admin bit
                    //   cmd_SP_Alta.Parameters.Add("@cod", SqlDbType.Char).Value = txt_codigo.Text;
                    //   cmd_SP_Alta.Parameters.Add("@nombre", SqlDbType.Char).Value = txtbx_nombre.Text;
                    //cmd_SP_Alta.Parameters.Add("@fechaalta", SqlDbType.DateTime).Value = date;
                    //cmd_SP_Alta.Parameters.Add("@fechabaja", SqlDbType.DateTime).Value = System.Data.SqlTypes.SqlDateTime.Null;  
                    // cmd_SP_Alta.Parameters.Add("@fecha_mod_pass", SqlDbType.DateTime).Value = System.Data.SqlTypes.SqlDateTime.Null;;
                    //cmd_SP_Alta.Parameters.Add("@clave", SqlDbType.VarChar).Value = txtbx_pass.Text;
                    //cmd_SP_Alta.Parameters.Add("@estado", SqlDbType.Bit).Value = true;


                    altaU.enviar_strings(cmd_SP_Alta, txt_codigo.Text, "@cod");
                    altaU.enviar_strings(cmd_SP_Alta, txtbx_nombre.Text, "@nombre");
                    altaU.enviar_fechas(cmd_SP_Alta, date, "@fechaalta");
               
                    DateTime baja = DateTime.MaxValue;
                    altaU.enviar_fechas(cmd_SP_Alta, baja, "@fechabaja");
                    altaU.enviar_fechas(cmd_SP_Alta, baja, "@fecha_mod_pass");
                    altaU.enviar_varchar(cmd_SP_Alta, txtbx_pass.Text, "@clave");
                    altaU.enviar_datos_Boolean(cmd_SP_Alta, true, "@estado");


                    if (ck_box_Administrador.Checked == true)
                    {
                        //cmd_SP_Alta.Parameters.Add("@admin", SqlDbType.Bit).Value = true;
                        altaU.enviar_datos_Boolean(cmd_SP_Alta, true, "@admin");
                    }
                    else
                    {
                        //cmd_SP_Alta.Parameters.Add("@admin", SqlDbType.Bit).Value = false;
                        altaU.enviar_datos_Boolean(cmd_SP_Alta, false, "@admin");
                    }


                    int resultado = cmd_SP_Alta.ExecuteNonQuery(); //ejecuta el comando.


                    cn_superbit.Close(); //cierro la conexion con la BD.

                    alta_usuarios.ActiveForm.Close();

                }
                catch 
                {
                    bool vnombre = usuarios.ValidarNombre(txtbx_nombre.Text);
                    if (vnombre == true)
                    {
                        MessageBox.Show("Ya existe el codigo o nombre de usuario");
                    }
                    MessageBox.Show("Ya existe el codigo o nombre de usuario");
                }
            }
            else
            {

                if (validar_repet == false)
                {
                    MessageBox.Show("Las contraseñas no coinciden");
                    txtbx_repetir_pass.Text = "";
                    txtbx_pass.Text = "";
                }
                if(ingreso !=1) {
                    MessageBox.Show("Debe ingresar todos los campos");
                }
            }
        }

        private void btn_cerrar_Click(object sender, EventArgs e)
        {
            alta_usuarios.ActiveForm.Close();
        }

        private int validar_ingreso()
        {
            if (txtbx_nombre.Text != "" && txt_codigo.Text != "" && txtbx_pass.Text != "" && txtbx_repetir_pass.Text != "")
            {
                return 1;
            }
            else
            {
                return 0;

            }
        }

    }
}
